﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dapper;
using ProjetoSolo.QueroGas.Dominio.Entidades;
using ProjetoSolo.QueroGas.Dominio.Repositorios;

namespace ProjetoSolo.QueroGas.Infraestrutura.PersistenciaAdo.Repositorios
{
    public class RepositorioTelefone : IRepositorioTelefone
    {
        private readonly ContextoAdo contexto;

        public RepositorioTelefone(IContextoRepositorio contexto)
        {
            this.contexto = (ContextoAdo)contexto;
        }

        public Telefone PegarPorCodigo(int codigo)
        {
            throw new NotImplementedException();
        }

        public IEnumerable<Telefone> PegarListaCompleta()
        {
            throw new NotImplementedException();
        }

        public int Cadastrar(Telefone telefone)
        {
            if (this.TelefoneJahExiste(telefone))
                return 0;

            return this.contexto.Conexao.Query<int>("insert into Telefone output inserted.IdTelefone values(@Ddd, @Numero, @Tipo)",
                telefone, this.contexto.Transacao()).First();;
        }

        public int PegarCodigoTelefone(Telefone telefone)
        {            
            return this.contexto.Conexao.Query<int>("select IdTelefone from Telefone where Ddd = @Ddd and Numero = @Numero", 
                telefone, this.contexto.Transacao()).First();
        }

        private bool TelefoneJahExiste(Telefone telefone)
        {            
            return this.contexto.Conexao.Query<int>("Select IdTelefone From Telefone Where Ddd = @Ddd and Numero = @Numero", 
                telefone, this.contexto.Transacao()).Any();
        }
    }
}
